Generation of video data for a raster scanned CRT is well understood. FIG. 1 shows a typical implementation. A CRT controller 10 is used to generate memory addresses for a display refresh buffer 12. A selector 14 interposed between the controller 10 and the buffer 12 is used to provide an alternate source of addressing so that the contents of the refresh buffer can be modified. Thus, the selector 14 may pass the refresh address from the controller 10 or an address on the system address bus to the display refresh buffer 12. By time division multiplexing (TDM) the refresh buffer bandwidth, interference between refresh and system accesses can be eliminated. For an alphanumeric character display, the display refresh buffer usually contains storage for a character code point and associated attributes. The character code point is used to address the character pel generator 16. Outputs from the character generator 16 are produced in synchronism with the scan line count output from the CRT controller 10. Attribute functions such as reverse video, blink, underscore, and the like are applied to the character generator outputs by the attribute logic 18, and the resultant pels are serialized to the video monitor.
A number of operating system (OS) and application programs allow a computer to carry on multiple tasks simultaneously. For example, a background data processing task might be carried on with a foreground word processing task. Related to the background data processing task might be a graphics generation task for producing pie or bar charts from the data generated in the data processing task. The data in all these tasks might be merged to produce a single document. The multi-tasking operation may be performed by a single computer such as one of the more popular micro computers now on the market, or it may be performed by a micro computer connected to a host computer. In the latter case, the host computer generally carries out the background data processing functions, while the micro computer carries out the foreground operations. By creating a composite display refresh buffer, the system shown in FIG. 1 can also be used to display windows from multiple tasks. Each task is independent of the others and occupies nonoverlapping space in the system memory. User defineable windows for the tasks resident in system memory can be constructed so as to display, within the limits imposed by the screen size, data from each of the tasks being processed. FIGS. 2A and 2B illustrate this concept. From the user perspective, windows can be displayed as either nonoverlapping, as shown in FIG. 2A, or layered or overlapping, as shown in FIG. 2B. It will be understood by those skilled in the art, however, that an overlapping display of the type shown in FIG. 2B does not imply lost data in the system memory. On the contrary, it is necessary to preserve the data for each task so that as an occulting window is moved about the display screen or even removed from the display screen, the underlying display data can be viewed by updating the refresh buffer.
While the implementation shown in FIG. 1 is adequate for a class of uses, it can become performance limited as the number of display windows and tasks is increased or as the display screen size is increased. As the time required to update the display refresh buffer significantly increases, system response time increases and therefore throughput decreases. Slower system response times can result from the following factors:
1. The display refresh buffer must be updated each time a task updates a location within system memory being windowed to the display screen. Control software, usually the OS, must monitor and detect the occurrence of this condition.
2. Scrolling data within one or more of the display windows requires the corresponding locations in the display refresh buffer to be updated. This may be better appreciated wit reference to FIG. 3 which shows the case of nonoverlapping windows as in FIG. 2A. Scrolling is accomplished by moving the viewable window within the system memory. Of course the same technique is used when scrolling data in overlapping windows as in FIG. 2B.
3. Whenever window sizes or positions are changed, the display refresh buffer must be updated with the appropriate locations from the system memory.